<?php
session_start();
require_once "config.php";
require_once "conexion.class.php";

$SoloError;
$SoloFirstValue;
$SoloArrParametros;

function SoloFun_ExecSqlFull($strSql, &$Arreglo, $SoloConn, $tipo_retorno = "NUM"){
    global $SoloError;
    global $SoloFirstValue;

    $exito = $SoloConn->EjecutarQuery($strSql);

//rw "sql", strSQL & "<br>err="& err & "- " & err.description
//re
    if (!$exito){
        $SoloError = $SoloConn->getErrorMessage();
    }else{
	$Arreglo = $SoloConn->getData($tipo_retorno);
        if($tipo_retorno == "NUM")
            $SoloFirstValue = $Arreglo[0][0];
    }

    $SoloConn->liberarResultado();
    $SoloConn->Cerrar();
    return $SoloFirstValue;
}

function SoloFun_ConsultarParametros(){
    global $SoloArrParametros;
    $soloSQL = "select * from solotb_parametros order by nodo,id";
    //'rw "",SoloSQL
    //'re
    return SoloFun_ExecSQL($soloSQL, $SoloArrParametros);
    //'rw "",SoloFirstValue
    //'re
}

function ObtieneValor($proc1, $des, $band){
    global $WORKFLOW;
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);
    $Valor="";
//'on error resume next
//'response.write "<br>proc="&proc1
//'response.write "<br>des="&des
//'response.write "<br>band="&band
//'response.write "<br>conn="&ConSQL
//'re
	//Set Obj =  server.CreateObject("ADODB.Recordset")
	//set Cmd = server.CreateObject("ADODB.Command")
	//set prm = server.CreateObject("ADODB.Parameter")
	//Cmd.ActiveConnection = Session("SoloConn")

    $params = array();
    if(trim($band) == "1")
        $params[0] = array("Descripcion", $des, "string",250);
    else
        $params[0] = array("Valor", $des, "int",4);

    if($oConexion->EjecutarProcedure($proc1, $params)){
	$arrDataOV = $oConexion->getData("NUM");
//'		response.write "<br>arrDataOV ="&ubound(arrDataOV,2)
        $Valor= $arrDataOV[0][0];
//'		response.write "<br>Valor="&Valor
    }else{
	//'response.write "<br>error="&err & " - " & err.description
	//'response.write "<br>eof="&Obj.eof
	//'re
        $error = 0;
        $arrDataOV = array();

    }
    $oConexion->liberarResultado();
    $oConexion->Cerrar();
    return $Valor;
}

function SoloFun_GetNameMonth($iMonth){
    switch($iMonth){
        case 1: return "Enero";
        case 2:  return "Febrero";
        case 3:  return "Marzo";
        case 4:  return "Abril";
        case 5:  return "Mayo";
        case 6:  return "Junio";
        case 7:  return "Julio";
        case 8:  return "Agosto";
        case 9:  return "Septiembre";
        case 10: return "Octubre";
        case 11: return "Noviembre";
        default: return "Diciembre";
    }
}

function SoloFun_ExecSql($strSql, &$Arreglo, $tipo_retorno = "NUM"){
    global $SoloERROR;
    global $SoloFirstValue;
    $SoloFlag_EOF=false;

    global $WORKFLOW;
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);
    
    //echo $strSql;
    if($oConexion->EjecutarQuery($strSql)){
        $Arreglo = $oConexion->getData($tipo_retorno);
        if($tipo_retorno == "NUM")
            $SoloFirstValue = $Arreglo[0][0];
    }else{
        $SoloERROR = $oConexion->getErrorMessage();
        $SoloFlag_EOF = true;
    }

    $oConexion->liberarResultado();
    $oConexion->Cerrar();
    return $SoloFirstValue;
}

function SoloFun_ExecQuery($strSql){
    global $SoloError;
//$err=0;
    //echo "<br>$strSQL<br>err=$err - ";
//'	response.end
    global $WORKFLOW;
    $bExito = true;
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);

    if(!$oConexion->EjecutarQuery($strSql)){
        $SoloError = $oConexion->getErrorMessage();
        echo $SoloError;
        $bExito = false;
    }

    $oConexion->liberarResultado();
    $oConexion->Cerrar();
    return $bExito;
    //return 0;
//'deje comentado la siguiente linea porq la funcion no me estaba devolviendo ningun valor
//	'Obj.close
	
//	set Obj=nothing
	
}

function SoloFun_CargaCombo($ArrCombo,$CboNombre,$CboDisabled,$itemselec,$cboFuncion,$cboTipo = null){
//dim f
//dim COLS,ROWS

    if (is_array($ArrCombo)){
        //'Arma Cabecera del Combo
        $resultado="<select name='$CboNombre' $cboFuncion";
        //'response.write(SoloFun_CargaCombo)
        //'response.End()
        if($CboDisabled)
            $resultado .= " disabled";

        $resultado .= ">";

        //'Incluye una Cabecera  que dice TODOS
        if($cboTipo == "T" || $cboTipo == "Null" || is_null($cboTipo))
            $resultado .= "<option value='TODOS'> </option>";

	if ($cboTipo == "TODOS")
            $resultado .= "<option value=''> TODOS </option>";

       //'Incluye una Cabecera EN BLANCO
	if ($cboTipo == "B")
            $resultado .= "<option value=''> </option>";

        if ($cboTipo == "Null" || is_null($cboTipo)){ //' If CL_Filas no trae datos entonces el Combo se Arma sin Items
            $resultado .= "</select>";
            return $resultado;
        }

        $ROWS = count($ArrCombo);
        $COLS = count($ArrCombo[0]);
//echo "$ROWS $COLS";
        //'Barrido de Filas
        for ($f=0; $f < $ROWS; $f++){
            //'Valor de la Opci�n
            switch($cboTipo){
                case "t260":
                case "t274":
                case "t285":
                    if (trim($ArrCombo[$f][2]) == trim($cboTipo)){
                        $resultado .= "<option value='{$ArrCombo[$f][0]}'";
                         //'Selected
                        if (strtoupper(trim($ArrCombo[$f][0])) == strtoupper(trim($itemselec)))
                            $resultado .= " selected";
                    }
                    break;
                case "PlasticoBin":
                    $resultado .= "<option value='{$ArrCombo[$f][0]}'";
                    //'Selected
                    if (substr(strtoupper(trim($ArrCombo[$f][0])), 0, 6) == strtoupper(trim($itemselec))){
                        $resultado .= " selected";
                    }
                    break;
                default:
                    $resultado .= "<option value='{$ArrCombo[$f][0]}'";
                    //'Selected
                    if (strtoupper(trim($ArrCombo[$f][0])) == strtoupper(trim($itemselec)))
                        $resultado .= " selected ";
            }

		     
            //'Descripci�n del Combo
            if ($COLS == 0) //' cuando se retorna 1 sola Columna
                $resultado .= ">{$ArrCombo[$f][0]}</option>";
            else{ //'Cuando se retorna + de 1 columna
                switch ($cboTipo){
                    case "1":
                    case "B":  //'Solo debe mostrar la descripci�n
                        $resultado .= ">{$ArrCombo[$f][1]}</option>";
                        break;
                    case "2":
                    case "T": //'Solo debe mostrar el codigo a pesar de traer descripci�n
                        $resultado .= ">{$ArrCombo[$f][0]}</option>";
                        break;
                    case "t260":
                    case "t274":
                    case "t285":  //'Muestra el Codigo - Descripci�n
                        if (trim($ArrCombo[$f][2]) == trim($cboTipo))
                            $resultado .= ">{$ArrCombo[$f][0]} - {$ArrCombo[$f][1]}</option>";
                        break;
                    default:
                        //'Muestra Descripci�n
                        $resultado .= ">{$ArrCombo[$f][1]}</option>";
                }
            }
        }
		
        //'Finaliza la creaci�n del Combo
        $resultado .= "</select>";
    }
    return $resultado;
}

function SoloFun_CargaCombo1($ArrCombo, $CboNombre, $CboDisabled, $itemselec, $cboFuncion, $cboTipo){
//dim f
//dim COLS,ROWS

    if (is_array($ArrCombo)){
        //'Arma Cabecera del Combo
        $resultado = "<select name='$CboNombre'$cboFuncion";
        //'response.write(SoloFun_CargaCombo1)
        //'response.End()
        if ($CboDisabled)
            $resultado .= " disabled";

        $resultado .= ">";

        //'Incluye una Cabecera  que dice TODOS
        if ($cboTipo == "T" || $cboTipo == "Null")
            $resultado .= "<option value='TODOS'> </option>";

        if ($cboTipo == "TODOS")
            $resultado .= "<option value=''> TODOS </option>";

        //'Incluye una Cabecera EN BLANCO
        if ($cboTipo == "B")
            $resultado .= "<option value=''> </option>";

        if ($cboTipo == "Null" || is_null($cboTipo)){ //' If CL_Filas no trae datos entonces el Combo se Arma sin Items
            $resultado .= "</select>";
            return $resultado;
        }

        $ROWS = count($ArrCombo);
        $COLS = count($ArrCombo[0]);

        //'Barrido de Filas
        for ($f = 0; $f < $ROWS; $f++){
              //'Valor de la Opci�n
            switch ($cboTipo){
                case "tecnico":
                    $resultado .= "<option value='{$ArrCombo[$f][0]},{$ArrCombo[$f][1]}'";
                    //'Selected
                    if (strtoupper(trim($ArrCombo[$f][1])) == strtoupper(trim($itemselec)))
                        $resultado .= " selected ";
                    break;
                case "t260":
                case "t274":
                case "t285":
                    if (trim($ArrCombo[$f][2]) == trim($cboTipo)){
                        $resultado .= "<option value='{$ArrCombo[$f][0]},{$ArrCombo[$f][1]}'";
                        //'Selected
                        if (strtoupper(trim($ArrCombo[$f][0])) == strtoupper(trim($itemselec)))
                            $resultado .= " selected";
                    }
                    break;
                case "PlasticoBin":
                    $resultado .= "<option value='{$ArrCombo[$f][0]},{$ArrCombo[$f][1]}'";
                    //'Selected
                    if (substr(strtoupper(trim($ArrCombo[$f][0])),0,6) == strtoupper(trim($itemselec)))
                        $resultado .= " selected";
                    break;
                default:
                    $resultado .=  "<option value='{$ArrCombo[$f][0]},{$ArrCombo[$f][1]}'";
                    //'Selected
                    if (strtoupper(trim($ArrCombo[$f][0])) == strtoupper(trim($itemselec)))
                        $resultado .=  " selected ";
                    break;
               }

                //'Descripci�n del Combo
            if ($COLS == 1) //' cuando se retorna 1 sola Columna
                $resultado .=  ">{$ArrCombo[$f][0]}</option>";
            else{ //'Cuando se retorna + de 1 columna
                switch ($cboTipo){
                    case "1":
                    case "B":  //'Solo debe mostrar la descripci�n
                        $resultado .=  ">{$ArrCombo[$f][1]}</option>";
                        break;
                    case "2":
                    case "T": //'Solo debe mostrar el codigo a pesar de traer descripci�n
                        $resultado .=  ">{$ArrCombo[$f][0]}</option>";
                        break;
                    case "t260":
                    case "t274":
                    case "t285":  //'Muestra el Codigo - Descripci�n
                        if (trim($ArrCombo[$f][2]) == trim($cboTipo))
                            $resultado .=  ">{$ArrCombo[$f][0]} - {$ArrCombo[$f][1]}</option>";
                        break;
                    default: //'Muestra Descripci�n
                        $resultado .=  ">{$ArrCombo[$f][1]}</option>";
                        break;
                }
            }
        }

        //'Finaliza la creaci�n del Combo
        $resultado .= "</select>";
    }
    return $resultado;
}

function IIF($dato, $verdadero, $falso){
    if($dato)
        return $verdadero;
    else
	return $falso;
}

function SoloFun_ShowAlertMessage($Mensaje){
//Dim NewMessage
//Dim i,car, ctrl
    $NewMessage="";
    $Mensaje = str_replace("'", "\"\"", $Mensaje);

    for ($i = 0; $i < strlen($Mensaje); $i++){
        $car = substr($Mensaje, $i, 1);
        if ($car == "\n" || $car == "'"){
//'			     response.write i & "->" & "ENTER " & asc(car) & " <BR>"
            $NewMessage .= "\n";
        }else{
//'			     response.write i & "->" & car & " " &  asc(car) & " <br>"
            $NewMessage .= $car;
        }
    }
    echo "<script language='javascript'>alert('$NewMessage');</script>";
//		  '------ C�digo a�adido por Mario V�lez P. -----
    $ctrl = trim($NameControlGetfocus);
    if ($ctrl != "")
        echo "<script language='javascript'>document.all.$ctrl.focus();</script>";
//		  '-----------------------------------------------
}

function rw($e1,$p1){
    echo $e1." ->".$p1."<- <br>";
}

function re(){
    exit();
}

function SoloFun_ConsultaParametrosAll($Arreglo, $Criterio, $Nodo){
    $soloSQL = "select id,valor from solotb_parametros where nodo = $Nodo";
    if (!empty($Criterio)){
        $soloSQL .= " and descripcion = '$Criterio'";
        $soloSQL .= " order by valor ";
    }
    return SoloFun_ExecSQL($soloSQL, $Arreglo);
}


function decript($pass){
	//Dim pos, key, temp
	//Dim i, temp1

    $pos = ord(substr($pass, 0, 1)) - 150;
    $key = ord(substr($pass, $pos + 1, 1));
    $temp = substr($pass, 0, $pos + 1);
    $pass = $temp.substr($pass, $pos + 2, strlen($pass));
    $pass = substr($pass, 1, strlen($pass));
    for ($i = 0; $i < strlen($pass); $i++){
        if (ord(substr($pass, $i, 1)) != $key)
            $temp1 .= chr($key - (int)ord(substr($pass, $i, 1)));
        else
            $temp1 .= chr(ord(substr($pass, $i, 1)));
    }
	return $temp1;
}

function encript($pass){
//on error resume next
	//Dim temp, $temp1
	//Dim pos, leng, dt, tim
	//Dim i, key

    $leng = strlen($pass);
    $tim = date("g:i:s");
    $tim = substr($tim, 0, strlen($tim) - 3);
    $tim = substr($tim, strlen($tim) - 2, 2) * (int)(rand() * 100);
    
    for ($i = 0; $i < strlen($tim); $i++)
        $pos += (int)substr($tim, $i, 1);
	
    while ($pos > strlen($pass)){
        $pos = $pos%10 + (int)(rand() * 10);
        if ($pos == 0)
            $pos = strlen($pass) + 1;
    }

    if ($pos <= 2)
        $pos = 3;
	
    $key = (255 - 150 + 1) * rand() + 150;
    
    for ($i = 0; $i < strlen($pass); $i++){
        if (ord(substr($pass, $i, 1)) > $key)
            $temp .= chr(ord(substr($pass, $i, 1)) - $key);
        elseif (ord(substr($pass, $i, 1)) < $key)
            $temp .= chr($key - ord(substr($pass, $i, 1)));
        else
            $temp .= chr(ord(substr($pass, $i, 1)));
    }
    
    $temp1 = substr($temp, 0, $pos) & chr($key);
    $temp1 .=  substr($temp, $pos, strlen($temp));
    $temp = chr($pos + 150).$temp1;
    return $temp;
}

function espacio($num){
//on error resume next
    $esp = "";
    for ($j = 0; $j < $num; $j++)
        $esp .= "&nbsp;";
	
    return $esp;
}


function SoloFun_MostrarFecha(){
    echo "Ecuador ".date("d")." de ".ObtieneMes(date("n"))." de ".date("Y");
}


function FormatFecha($pFech, $pForEnt, $pForSal){
//Dim Arr
//Dim DelEnt, DelSal
//on error resume next

    if (is_null($pFech) || is_null($pForEnt) || is_null($pForSal)){
	$FormatFecha = "";
        return $FormatFecha;
    }

    if (trim($pFech) == "" || trim($pForEnt) == "" || trim($pForSal) == ""){
	$FormatFecha = "";
        return $FormatFecha;
    }


    if (strpos($pForEnt, "/") === false)
        $DelEnt = "-";
    else
        $DelEnt = "/";
    

    if (strpos($pForSal, "-") === false)
        $DelSal = "/";
    else
        $DelSal = "-";
    
    $Arr = preg_split("[\\$DelEnt]", trim($pFech));

    if (!is_array($Arr))
        return "";
	
    //if ($Arr[0] < 2 || $Arr[0] > 2)
        //return "";
	
    $pForEnt = strtoupper($pForEnt);

    switch($pForEnt){
        //DD/MM/YYYY
        case "DD" . $DelEnt . "MM" . $DelEnt . "YYYY":
            switch(strtoupper($pForSal)){
                case "DD" . $DelSal . "MM" . $DelSal . "YYYY":
                    $FormatFecha = FormatDia($Arr[0], "D", "DD").$DelSal.FormatMes($Arr[1], "M", "MM").$DelSal.substr(trim($Arr[2]), 0, 4);
                    break;
                case "DD" . $DelSal . "MMM" . $DelSal . "YYYY":
                    $FormatFecha = FormatDia($Arr[0], "D", "DD") . $DelSal . FormatMes($Arr[1], "MM", "MMM") . $DelSal . substr(trim($arr[2]), 0, 4);
                    break;
                case "YYYY" . $DelSal . "MM" . $DelSal . "DD":
                    $FormatFecha = trim($Arr[2]). $DelSal . FormatMes($Arr[1], "M", "MM") . $DelSal . FormatDia($Arr[0], "D", "DD");
                    break;
                case "YYYY" . $DelSal . "MMM" . $DelSal . "DD":
                    $FormatFecha = substr(trim($Arr[2]), 0, 4) . $DelSal . FormatMes($Arr[1], "MM", "MMM") . $DelSal . FormatDia($Arr[0], "D", "DD");
                    break;
                case "MM" . $DelSal . "DD" . $DelSal . "YYYY":
                    $FormatFecha = FormatMes($Arr[1], "M", "MM") . $DelSal . FormatDia($Arr[0], "D", "DD") . $DelSal . substr(trim($Arr[2]), 0, 4);
                    break;
                case "YYMMDD":
                    $FormatFecha = FormatAnio(substr(trim($Arr[2]), 0, 4), "YYYY", "YY") . FormatMes($Arr[1], "M", "MM") . FormatDia($Arr[0], "D", "DD");
                    break;
            }
            break;
    
        //YYYY/MM/DD
        case "YYYY" . $DelEnt . "MM" . $DelEnt . "DD":
            switch(strtoupper($pForSal)){
                case "DD" . $DelSal . "MM" . $DelSal . "YYYY":
                    //'dia=FormatDia($Arr[0], "D", "DD")
                    //'mes=FormatMes($Arr[1], "M", "MM")
                    //'ano=substr(trim($arr[2]), 0, 4)
                    $ano = $Arr[0];
                    $mes = $Arr[1];
                    $dia = $Arr[2];
                    //'rw "ano",ano
                    //'rw "mes",mes
                    //'rw "dia",dia
                    //'re
                        //'FormatFecha = FormatDia($Arr[0], "D", "DD") . $DelSal . FormatMes($Arr[1], "M", "MM") . $DelSal . substr(trim($arr[2]), 0, 4)
                    $FormatFecha = $dia . $DelSal . $mes . $DelSal . $ano;
                    //'RW "FormatFecha",FormatFecha
                    //'RE
                    break;
                case "DD" . $DelSal . "MMM" . $DelSal . "YYYY":
                    $FormatFecha = FormatDia($Arr[0], "D", "DD") . $DelSal . FormatMes($Arr[1], "MM", "MMM") . $DelSal . substr(trim($Arr[2]), 0, 4);
                    break;
                case "YYYY" . $DelSal . "MM" . $DelSal . "DD":
                    $FormatFecha = substr(trim($Arr[2]), 0, 4) . $DelSal . FormatMes($Arr[1], "M", "MM") . $DelSal . FormatDia($Arr[0], "D", "DD");
                    break;
                case "YYYY" . $DelSal . "MMM" . $DelSal . "DD":
                    $FormatFecha = substr(trim($Arr[2]), 0, 4) . $DelSal . FormatMes(Arr(1), "MM", "MMM") . $DelSal . FormatDia($Arr[0], "D", "DD");
                    break;
                case "MM" . $DelSal . "DD" . $DelSal . "YYYY":
                    $FormatFecha = FormatMes($Arr[1], "M", "MM") . $DelSal . FormatDia($Arr[0], "D", "DD") . $DelSal . substr(trim($Arr[2]), 0, 4);
                    break;
               case "YYMMDD":
                    $FormatFecha = FormatAnio(substr(trim($Arr[2]), 0, 4), "YYYY", "YY") . FormatMes($Arr[1], "M", "MM") . FormatDia($Arr[0], "D", "DD");
                    break;
            }
            break;
        case "MM" . $DelEnt . "DD" . $DelEnt . "YYYY":
            switch(strtoupper($pForSal)){
                case "DD" . $DelSal . "MM" . $DelSal . "YYYY":
                    $FormatFecha = FormatDia($Arr[1], "D", "DD") . $DelSal . FormatMes($Arr[0], "M", "MM") . $DelSal . substr(trim($Arr[2]), 0, 4);
                    break;
                case "DD" . $DelSal . "MMM" . $DelSal . "YYYY":
                    $FormatFecha = FormatDia($Arr[1], "D", "DD") . $DelSal . FormatMes($Arr[0], "MM", "MMM") . $DelSal . substr(trim($Arr[2]), 0, 4);
                    break;
                case "YYYY" . $DelSal . "MM" . $DelSal . "DD":
                    $FormatFecha = substr(trim($Arr[2]), 0, 4) . $DelSal . FormatMes($Arr[0], "M", "MM") . $DelSal . FormatDia($Arr[1], "D", "DD");
                    break;
                case "YYYY" . $DelSal . "MMM" . $DelSal . "DD":
                    $FormatFecha = substr(trim($Arr[2]), 0, 4) . $DelSal . FormatMes($Arr[0], "MM", "MMM") . $DelSal . FormatDia($Arr[1], "D", "DD");
                    break;
                case "YYMMDD":
                    $FormatFecha = FormatAnio(substr(trim($Arr[2]), 0, 4), "YYYY", "YY") . FormatMes($Arr[0], "M", "MM") . FormatDia($Arr[1], "D", "DD");
                    break;
            }
            break;	
        case "DD" . $DelEnt . "MMM" . $DelEnt . "YYYY":
            switch(strtoupper($pForSal)){
                case "YYYY" . $DelSal . "MM" . $DelSal . "DD":
                    $FormatFecha = substr(trim($Arr[2]), 0, 4) . $DelSal . FormatMes($Arr[1], "MMM", "MM") . $DelSal . FormatDia($Arr[0], "D", "DD");
                    break;
            }
            break;
    }
    return $FormatFecha;
}

/*=======================================================================================================================
 * DESCRIPCION:	Formatea un mes especifico.
 * PARAMETROS:	� pMes:	Mes origen.
 *				� pForEntrada:	Formato de entrada.
 *				� pForSalida:	Formato de salida.
 * SALIDA:		Si el formato fue correcto la funci�n devolver� el mes formateado caso contrario NULL.
 * =======================================================================================================================
 */
function FormatMes($pMes, $pForEntrada, $pForSalida){
    switch(trim($pForEntrada)){ //'JM.
        case "MMM":
            switch(trim($pForSalida)){
                case "MM":
                    switch(trim($pMes)){
                        case "Ene" : $FormatMes = "01";
                        break;
                        case "Feb" : $FormatMes = "02";
                        break;
                        case "Mar" : $FormatMes = "03";
                        break;
                        case "Abr" : $FormatMes = "04";
                        break;
                        case "May" : $FormatMes = "05";
                        break;
                        case "Jun" : $FormatMes = "06";
                        break;
                        case "Jul" : $FormatMes = "07";
                        break;
                        case "Ago" : $FormatMes = "08";
                        break;
                        case "Sep" : $FormatMes = "09";
                        break;
                        case "Oct" : $FormatMes = "10";
                        break;
                        case "Nov" : $FormatMes = "11";
                        break;
                        case "Dic" : $FormatMes = "12";
                        break;
                        default: $FormatMes = "";
                        break;
                    }
                    break;
                default: $FormatMes = "";
                break;
            }
        case "MM":
            switch(trim($pForSalida)){
                case "MMM":
                    switch(trim($pMes)){
                        case "1":
                        case "01": $FormatMes = "Ene";
                        break;
                        case "2":
                        case "02": $FormatMes = "Feb";
                        break;
                        case "3":
                        case "03": $FormatMes = "Mar";
                        break;
                        case "4":
                        case "04": $FormatMes = "Abr";
                        break;
                        case "5":
                        case "05": $FormatMes = "May";
                        break;
                        case "6":
                        case "06": $FormatMes = "Jun";
                        break;
                        case "7":
                        case "07": $FormatMes = "Jul";
                        break;
                        case "8":
                        case "08": $FormatMes = "Ago";
                        break;
                        case "9":
                        case "09": $FormatMes = "Sep";
                        break;
                        case "10": $FormatMes = "Oct";
                        break;
                        case "11": $FormatMes = "Nov";
                        break;
                        case "12": $FormatMes = "Dic";
                        break;
                        default: $FormatMes = "";
                        break;
                }
                break;
                default: $FormatMes = "";
                break;
            }
        case "M":
            switch(trim($pForSalida)){
                case "MM":
                    switch(trim($pMes)){
                        case "1": $FormatMes = "01";
                        break;
                        case "2": $FormatMes = "02";
                        break;
                        case "3": $FormatMes = "03";
                        break;
                        case "4": $FormatMes = "04";
                        break;
                        case "5": $FormatMes = "05";
                        break;
                        case "6": $FormatMes = "06";
                        break;
                        case "7": $FormatMes = "07";
                        break;
                        case "8": $FormatMes = "08";
                        break;
                        case "9": $FormatMes = "09";
                        break;
                        default: $FormatMes = trim($pMes);
                        break;
                    }
                    break;
                default: $FormatMes = "";
                break;
            }
            break;
        default: $FormatMes = "";
        break;
    }
    return $FormatMes;
}

/* =======================================================================================================================
 * DESCRIPCION:	Formatea un dia especifico.
 * PARAMETROS:	� pDia:	Dia origen.
 *				� pForEntrada:	Formato de entrada.
 *				� pForSalida:	Formato de salida.
 * SALIDA:		Si el formato fue correcto la funci�n devolver� el dia formateado caso contrario NULL.
 * ======================================================================================================================
 */
function FormatDia($pDia, $pForEntrada, $pForSalida){
    switch($pForEntrada){ //'JM.
        case "D":
            switch($pForSalida){
                case "DD":
                    switch(trim($pDia)){
                        case "1": $FormatDia = "01";
                        break;
                        case "2": $FormatDia = "02";
                        break;
                        case "3": $FormatDia = "03";
                        break;
                        case "4": $FormatDia = "04";
                        break;
                        case "5": $FormatDia = "05";
                        break;
                        case "6": $FormatDia = "06";
                        break;
                        case "7": $FormatDia = "07";
                        break;
                        case "8": $FormatDia = "08";
                        break;
                        case "9": $FormatDia = "09";
                        break;
                        default: $FormatDia = trim($pDia);
                        break;
                    }
                    break;
                default: $FormatDia = "";
                    break;
            }
            break;
        default: $FormatDia = "";
                break;
    }
    return $FormatDia;
}

/*
 * =======================================================================================================================
 * DESCRIPCION:	Formatea un a�o especifico.
 * PARAMETROS:	� pAnio: A�o origen.
 *				� pForEntrada:	Formato de entrada.
 *				� pForSalida:	Formato de salida.
 * SALIDA:		Si el formato fue correcto la funci�n devolver� el a�o formateado caso contrario NULL.
 * =======================================================================================================================
 */
function FormatAnio($pAnio, $pForEntrada, $pForSalida){
    switch($pForEntrada){ //JM.
        case "YYYY":
            switch($pForSalida){
                case "YY":
                    $FormatAnio =  trim(substr(trim($pAnio), strlen($pAnio)-2));
                    break;
                default: $FormatAnio = "";
                    break;
            }
            break;
            default: $FormatAnio = "";
            break;
    }
    return $FormatAnio;
}

function ObtieneMes($pMes){
    switch (trim($pMes)){
        case "1":
        case "01": $ObtieneMes = "Enero";
                    break;
        case "2":
        case "02": $ObtieneMes = "Febrero";
                    break;
        case "3":
        case "03": $ObtieneMes = "Marzo";
                    break;
        case "4":
        case "04": $ObtieneMes = "Abril";
                    break;
        case "5":
        case "05": $ObtieneMes = "Mayo";
                    break;
        case "6":
        case "06": $ObtieneMes = "Junio";
                    break;
        case "7":
        case "07": $ObtieneMes = "Julio";
                    break;
        case "8":
        case "08": $ObtieneMes = "Agosto";
                    break;
        case "9":
        case "09": $ObtieneMes = "Septiembre";
                    break;
        case "10": $ObtieneMes = "Octubre";
                    break;
        case "11": $ObtieneMes = "Noviembre";
                    break;
        case "12": $ObtieneMes = "Diciembre";
                    break;
    }
    return $ObtieneMes;
}

/***********Nuevas funciones**************/


function SoloFun_IngresaLog($co_modu,$co_tran,$ds_tran){
    $Max = 1;
    $Max = SoloFun_Maximo("id","solotb_logaccess");
 //'rw "Max",Max
 //'re
    if ($_SESSION["ptl"] == "")
        $_SESSION["ptl"] = "1";
    
    $fecha_consulta = date("d/m/Y");//day(now)&"/"&month(now)&"/"& year(now) 
    $ip = $_SERVER["REMOTE_ADDR"];//Request.ServerVariables("REMOTE_ADDR")
    
    if (!empty($co_modu) && !empty($co_tran)){
	$strSql = "insert into solotb_logaccess "
                . "values($Max,{$_SESSION["ptl"]},"
                . "$co_modu," 	//'de menu
                . "$co_tran," 	//'de menu
                . "'{$_SESSION["co_usua"]}',"
                . "'$ip',"
//'	strSql=strSql & "'" & fecha_consulta& "'," 
                . "CURRENT_TIMESTAMP,"
//'	strSql=strSql & "getdate()," 
                . "'$ds_tran')"; 	//'de menu
    }
//' rw "sql", strSql
//' re
// On error resume next
    global $WORKFLOW;
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);
 //set ObjDatos=Server.CreateObject("ADODB.Recordset")
//ObjDatos.Open strSql,Session("SoloConn")
    if(!$oConexion->EjecutarQuery($strSql)){
    //if err<>0 then
        echo "<br>error log =" . $oConexion->getErrorMessage() . " SQL= " . $strSql . " h " . date("g:i:s");
    //'re
    //end if
    }
//'re
}


function SoloFun_Maximo($Solocampo, $soloTabla){
    $strnodo = 1;

    $SoloSQL = "select (max(" . $Solocampo . ")+1) as maximo from " . $soloTabla . " where nodo= " . $strnodo;
    //'rw "sql",SoloSQL
	//'re
    SoloFun_ExecSql($SoloSQL, $ArrMaximo);

	$Max = 1;
	if (!is_null($ArrMaximo[0][0]))
	   $Max = $ArrMaximo[0][0];

	return $Max;
        //'rw "MAx",Max
}

function SoloFun_GetIcon($Tipo){
//'response.write Tipo
    switch($Tipo){
        case "Text Document":
        case "Documento de texto":
            $icono = "SoloIco_txt.gif";
            break;
        case "Word Document":
        case "Documento de Microsoft Word":
        case "WordPad Document":
            $icono = "SoloIco_word.gif";
            break;
        case "Excel Document":
        case "Hoja de cálculo de Microsoft Excel":
        case "XLS File":
            $icono = "SoloIco_excel2000.gif";
            break;
        case "Pdf Document":
        case "Documento Adobe Acrobat":
        case "Adobe Acrobat Document":
            $icono = "SoloIco_pdf.gif";
            break;
        case "Presentación de Microsoft PowerPoint":
            $icono = "SoloIco_ppt.gif";
            break;
        default:
            $icono = "SoloIco_IcGen.gif";
            break;
    }
    return $icono;
}

function SoloFun_CheckFirstTime(){
    $err=0;
   //'Validaci�n Por Primera Vez
    $SoloSQL="select * from solotb_logaccess where usuario = '" . $_REQUEST["SoloUser"] . "'";
    //'rw "",SoloSQL
    //'rw "",Session("SoloConn")
	//'re
    $Flag = SoloFun_ExecSql($SoloSQL, $Arreglo);
    //'rw "valor",Arreglo(0,0)
	//'rw "",Flag
	//'re 
	if (empty($Flag))
	  //'Primera Vez
	   //'response.write "solotrn_CambiarClaveUsuario.asp"
	   //'re
	   //'Call SoloFun_IngresaLog(2,101,"Ingreso a la Intranet por Primera Vez")
            header("Location: solotrn_CambiarClaveUsuario.asp?Volver=1");
}

function SoloFun_ValidaActiveDirectory($p1, $p2){
//'rw "1",SoloDomainName
//'rw "2",SoloUserTest
//'rw "3",SoloUserTestPassword
//'rw p1,p2
//'re
	 /*Set objLogon = Server.CreateObject("LoginAdmin.ImpersonateUser")
	 if err<>0 then
		response.write err.description
		response.end
	 end if
	 objLogon.Logon SoloUserTest, SoloUserTestPassword, SoloDomainName
	 if err<>0 then
		response.write err.description
		response.end
	 end if

	 Set oUser = Server.CreateObject("prjLogin.clsDomainLogin")
	 if err<>0 then
		response.write err.description
		response.end
	 end if
         //'rw "err",err.description 
	 SoloFun_ValidaActiveDirectory = oUser.BindObject(p1, p2, SoloDomainName)
     //'rw "err",err.description 
     //'re  
     set oUser = Nothing
	 set objLogon = Nothing*/

}

function SoloFun_ObtieneDatosUsuario($p1, $p2){
    global $WORKFLOW;
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);

$err=0;
    $SoloSQL = "select a.*,b.ds_perf,c.telefono from solotb_usuario a, solotb_perfil b, solotb_usuario_infoadic c "
                ." where a.nu_usua = c.nu_usua and a.co_perf = b.co_perf "
                ."   and a.co_usua = '$p1'";
//echo $SoloSQL;
    //'rw "",SoloSQL
    //'re
    if(!$oConexion->EjecutarQuery($SoloSQL))
        header("Location: index.php?SoloPageid=1&SoloError=Usuario no existe en la Intranet");
    
	//'rw "", err.description & "--3"
	//'re
    //'rw "","aqui 1"
    //'re
    //'rw "","aqui 2"
    //'re

    if (strlen($p2)>0)
        if ($p2 != decript(trim(SoloRsLogin("cl_usua"))))
              //'response.write p2
              //'re 
              header("Location: index.php?SoloPageid=1&Soloerror=Clave Incorrecta de la Intranet");

    //'rw "","aqui 3"
    //'re

    $_SESSION["id_usua"] = SoloRsLogin("nu_usua");
    $_SESSION["co_usua"] = SoloRsLogin("co_usua");
    $_SESSION["no_usua"] = SoloRsLogin("no_usua");
    $_SESSION["co_perf"] = SoloRsLogin("co_perf");
    $_SESSION["ds_perf"] = SoloRsLogin("ds_perf");
    $_SESSION["id_rolp"] = SoloRsLogin("telefono");    
    $_SESSION["login"] = "OK";
    $_SESSION["SoloId"] = SoloRsLogin("nu_usua");
    //set SoloRsLogin=nothing

    //'call SoloFun_JoinCompany       
    //'Call SoloFun_CheckFirstTime
    SoloFun_IngresaLog(2,101,"Ingreso a la Intranet");
}


function SoloFun_ValidaUsuario($p1,$p2){
    global $WORKFLOW;
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);

    $err=0;
    $bValido = false;
    $SoloSQL = "select a.* from solotb_usuario a where "
                . "    a.co_usua = '" . $p1 . "'";
    //'rw "",SoloSQL
    //'re
    if(!$oConexion->EjecutarQuery($SoloSQL))
        header("Location: SoloServices_EntradaSalida.php?SoloUser=$p1&SoloError=Usuario no existe en la Intranet");
        
    $oConexion->liberarResultado();
    $oConexion->Cerrar();
    
    if (strlen($p2) > 0)
        if ($p2 != decript(trim(SoloRsLogin("cl_usua"))))
              header("Location: SoloServices_EntradaSalida.php?SoloUser=$p1&Soloerror=Clave Incorrecta de la Intranet");
    
    $bValido = true;
    SoloFun_IngresaLog(2,101,"Firma de Entrada-Salida");
    return $bValido;
}


/*function Str2ProperCase($sValue){
    $iPos = 1;
    
    while (strpos($sValue, " ") > 0){
        $iSpace = InStr($iPos, $sValue, " ", 1);
        $sTemp .= strtoupper(substr($sValue, iPos-1, 1));
        $sTemp .= strtolower(substr($sValue, $iPos , $iSpace - $iPos));
        $iPos = $iSpace + 1;
    }

    $sTemp .= strtoupper(substr($sValue, $iPos, 1));
    $sTemp .= strtolower(substr($sValue, $iPos));

    return $sTemp;
}*/

function Str2ProperCase($sValue) {
    $iPos = 0;
    while (strpos($sValue, " ", $iPos) !== FALSE) {
        $iSpace = strpos($sValue, " ", $iPos);
        $sTemp .= strtoupper(substr($sValue, $iPos, 1));
        $sTemp .= strtolower(substr($sValue, $iPos + 1, $iSpace - $iPos));
        $iPos = $iSpace + 1;
    }

    $sTemp .= strtoupper(substr($sValue, $iPos, 1));
    $sTemp .= strtolower(substr($sValue, $iPos + 1));

    return $sTemp;
}

function SoloFun_GetInfoAdic($p1, $v1){
    global $WORKFLOW;
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);

    $err=0;
    $SoloSQL = "select a.* from solotb_usuario_infoadic a, solotb_usuario b "
                . "   where a.nu_usua=b.nu_usua and b.co_usua = '$p1'";

    //'rw "sql",SoloSQL
    //'re
    if(!$oConexion->EjecutarQuery($SoloSQL)){
	//'rw "", err.description & "--33"
	//'re
       if (strlen($v1) != 0)
          header ("Location: SoloServices_EntradaSalida.php?SoloUser=$p1&SoloError=Usuario no existe en la Intranet");
       else //echo "Usuario no existe en la intranet";
          header ("Location: index.php?SoloPageid=1&SoloError=Usuario no existe en la Intranet");
    }
    
    $FLAG_ACTIVE_DIRECTORY = SoloRsAdic("active_directory");
    $v1 = SoloRsAdic("telefono");
    //set SoloRsAdic=nothing
    return $FLAG_ACTIVE_DIRECTORY;
}

function SoloFun_GetInfoAdictelf($p1,$v1){
//$err=0;
    global $WORKFLOW;
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);

    $SoloSQL = "select a.* from solotb_usuario_infoadic a, solotb_usuario b "
                ."   where a.nu_usua=b.nu_usua and b.co_usua = '$p1'";
    //'rw "sql",SoloSQL
    //'re
    if(!$oConexion->EjecutarQuery($SoloSQL)){
	//'rw "", err.description & "--33"
	//'re
        $oConexion->liberarResultado();
        $oConexion->Cerrar();
       if (strlen($v1) != 0)
          header ("Location: SoloServices_EntradaSalida.php?SoloUser=$p1&SoloError=Usuario no existe en la Intranet");
       else 
          header ("Location: index.php?SoloPageid=1&SoloError=Usuario no existe en la Intranet");
    }else{
        $SoloRsAdic = $oConexion->getData();
    }

    return $SoloRsAdic[0]["telefono"];
}

function SoloFun_ExecSql2($strSql,&$Arreglo){
    global $SoloError;
    global $SoloFirstValue;
    global $WORKFLOW;
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);

    $SoloError = "";
    $SoloFirstValue="";
    $SoloFlag_EOF=false;

    if(!$oConexion->EjecutarQuery($strSql)){
	//'response.write "sql=" & strSQL & "<br>err="& err & "- " & err.description
	//'re
        $SoloError = $oConexion->getErrorMessage();
        $SoloFlag_EOF = true;
	
                
                //'rw "",SoloError 
    }else{
        $Arreglo = $oConexion->getData("NUM");
        $SoloFirstValue = $Arreglo[0][0];
        //'rw "First",SoloFirstValue
    }
    $oConexion->liberarResultado();
    $oConexion->Cerrar();

    return $SoloFirstValue;
}

function SoloFun_Redirigir(){
    if (isset($_SESSION["SoloId"]) && !empty($_SESSION["SoloId"]))
       header ("Location soloportal_privada.php?SoloPage=soloportal_Welcome.php");
    else
       header ("Location: index.php?SoloPageid=1&Soloerror=Error en encontrar Usuario");
}

function SoloFun_SendeMail($SoloTos,$SoloSubject,$SoloContent){
//   Dim SoloSMTP
//   Dim SoloSMTP_Port
//   Dim SoloFromNameDescription
//   Dim SoloFromAddress

/*
     //'Enviar Mail 
      //Dim objMailer
      Set objMailer = Server.CreateObject("Dundas.Mailer")
      if (err<>0) {
         response.write err.description  
         RE       
      }

   $SoloSQL = "select valor from solotb_parametros order by id";
   SoloFun_ExecSQL($SoloSQL,$SoloArrParametros);

   $SoloSMTP = SoloArrParametros(0,15-1);
   $SoloSMTP_Port = 25; //'SoloArrParametros(0,15-1)
   $SoloFromNameDescription = SoloArrParametros(0,16-1);
   $SoloFromAddress = SoloArrParametros(0,17-1);

   //'rw "SMTP",SoloSMTP
   //'rw "PORT",SoloSMTP_Port
   //'rw "FROM NAME",SoloFromNameDescription
   //'rw "ADDRESS",SoloFromAddress
   //'rw "TOS",SoloTos
   //'rw "SUBJECTS",SoloSubject
   //'re
      objMailer.SMTPRelayServers.Add SoloSMTP, SoloSMTP_Port
      objMailer.FromAddress = SoloFromAddress
      objMailer.FromName = SoloFromNameDescription
      objMailer.Subject = SoloSubject
      objMailer.HTMLBody = SoloContent
      objMailer.TOs.Add SoloTos
      objMailer.SendMail	   
      if err<>0 then
	 echo "error al enviar correo " . err.description;
	 response.end 
         //'SoloFun_SendeMail=-1
      else{
      //'   rw "","ok"
         //'SoloFun_SendeMail=0
      }
      set ObjMailer = Nothing*/
}

function EjecutaSentenciaSql($strSql){
    global $WORKFLOW;
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);
    
    
//'ejecuta en sql
    $valor="";
//'on error resume next
//'	response.end
    if(!$oConexion->EjecutarQuery($strSql)){
        $strERROR=1;
        echo $oConexion->getErrorMessage();
        //'response.End()
    }else{
        $arrDatos=$oConexion->getData("NUM");
        $valor = $arrDatos[0][0];
        $oConexion->liberarResultado();
    }
    
    
    $oConexion->Cerrar();
    
    return $valor;
}

function printArray($array){
    echo "<pre>"; print_r($array); echo "</pre>";
}

function datediff($formato_tiempo, $fecha1, $fecha2) {
    $arrFecha_Hora1 = preg_split("[\s]", $fecha1);
    $arrFecha_Hora2 = preg_split("[\s]", $fecha2);
    //$arrFecha1 = split("/", $arrFecha_Hora1[0]);
    $arrFecha1 = preg_split("[-]", $arrFecha_Hora1[0]);

    if(count($arrFecha1) < 2)
        $arrFecha1 = preg_split("[-]", $arrFecha_Hora1[0]);
    $arrFecha2 = preg_split("[/]", $arrFecha_Hora2[0]);

    if($formato_tiempo == "d") { //d/m/Y
        //mktime recibe en mes,dia,anio
        $diferencia = (mktime(null, null, null, $arrFecha2[1], $arrFecha2[0], $arrFecha2[2]) - mktime(null, null, null, $arrFecha1[1], $arrFecha1[2], $arrFecha1[0]))/86400;
    }else if($formato_tiempo == "h") {
        $arrTiempo1 = preg_split("[\:]", $arrFecha_Hora1[1]);
        $arrTiempo2 = preg_split("[\:]", $arrFecha_Hora2[1]);
//printArray($arrFecha1);
//printArray($arrTiempo1);
//printArray($arrFecha2);
//printArray($arrTiempo2);
        //echo mktime($arrTiempo2[0], $arrTiempo2[1], $arrTiempo2[2], $arrFecha2[1], $arrFecha2[0], $arrFecha2[2]) - mktime($arrTiempo1[0], $arrTiempo1[1], $arrTiempo1[2], $arrFecha1[1], $arrFecha1[2], $arrFecha1[0]);
        $diferencia = (mktime($arrTiempo2[0], $arrTiempo2[1], $arrTiempo2[2], $arrFecha2[1], $arrFecha2[0], $arrFecha2[2]) - mktime($arrTiempo1[0], $arrTiempo1[1], $arrTiempo1[2], $arrFecha1[1], $arrFecha1[2], $arrFecha1[0]))/3600;
    }
//echo $diferencia."<br>";
    return $diferencia;
}


function DateAdd($interval, $number, $timestamp) {
    //la fecha viene en d/m/Y
    //$arr_fecha = split("/", $date);
    //$timestamp= mktime(null,null,null,$arr_fecha[1],$arr_fecha[0],$arr_fecha[2]);
    $date_time_array = getdate($timestamp);
    $hours = $date_time_array['hours'];
    $minutes = $date_time_array['minutes'];
    $seconds = $date_time_array['seconds'];
    $month = $date_time_array['mon'];
    $day = $date_time_array['mday'];
    $year = $date_time_array['year'];

    switch ($interval) {
        case 'yyyy':
            $year+=$number;
            break;
        case 'q':
            $year+=($number*3);
            break;
        case 'm':
            $month+=$number;
            break;
        case 'y':
        case 'd':
        case 'w':
            $day+=$number;
            break;
        case 'ww':
            $day+=($number*7);
            break;
        case 'h':
            $hours+=$number;
            break;
        case 'n':
            $minutes+=$number;
            break;
        case 's':
            $seconds+=$number; 
            break;            
    }
       $timestamp= mktime($hours,$minutes,$seconds,$month,$day,$year);
    return $timestamp;
}

function getArrFromDate($fecha, $separador){
    $arrDate = preg_split("[\s]", $fecha);
    //el primer elemento es la fecha el segundo la hora
    $arrFecha = preg_split("[\\$separador]", $arrDate[0]);
    if(count($arrDate) > 1){//hay hora
        $arrTiempo = preg_split("[\:]", $arrDate[1]);
        $arrFecha = array_merge($arrFecha, $arrTiempo);
    }
    return $arrFecha;
}

function getTimestampFromArray($arrFecha, $formato){
    //formato puede ser Y-m-d o d-m-Y
    if($formato == "Y-m-d")
        return @mktime($arrFecha[3], $arrFecha[4], $arrFecha[5], $arrFecha[1], $arrFecha[2], $arrFecha[0]);
    elseif($formato == "d-m-Y")
        return @mktime($arrFecha[3], $arrFecha[4], $arrFecha[5], $arrFecha[1], $arrFecha[0], $arrFecha[2]);
}

function getTimestampFromDate($date, $format, $separador){
    $fecha = preg_split("/[\s]*[$separador][\s]*/", $date);
    return getTimestampFromArray($fecha, $format);
}

function crearQueryLog($tabla, $tipo, $accion){
    $strSql = "select max(id)+1 as maxId from solotb_logaccess";
    $id = SoloFun_ExecSql($strSql, $Arreglo);
    if(empty($id))
        $id = 1;
    if(strlen($accion) > 255)
        substr($accion, 0, 255);
    $accion = "";
    //$sql = "INSERT INTO solotb_logaccess (id, nodo, usuario, ip, accion) VALUES ($id, {$_SESSION["empresa"]}, '{$_SESSION["co_usua"]}', '{$_SERVER["REMOTE_ADDR"]}', '$accion')";
    $sql = "INSERT INTO log (nodo, usuario, ip, tabla, tipo, accion) VALUES ({$_SESSION["empresa"]}, '{$_SESSION["co_usua"]}', '{$_SERVER["REMOTE_ADDR"]}', '$tabla', '$tipo', '$accion')";
    return $sql;
}

function crearPaginador($url, $pag, $num_pags, $url_params = null){
    if($num_pags > 1){
    ?>
    <script type="text/javascript">
        function seleccionarPagina(){
            var pagina = document.getElementById("cmbPagina").options[document.getElementById("cmbPagina").selectedIndex].text;
            var link = "<?php echo $url;?>.php?pagina="+pagina+"&num_pags=<?php echo $num_pags; echo $url_params;?>";
            window.location = link;
        }
    </script>
    <table style="width: 90%; border: 0" cellpadding="0" cellspacing="1" align="center">
        <tr>
            <td class="SoloStyle_Texto" style="text-align: right" colspan="3">
                <a href="<?php echo $url;?>.php?pagina=1&num_pags=<?php echo $num_pags; echo $url_params;?>" title="Ir a primera p&aacute;gina">&laquo;</a>&nbsp;
                <?php if($pag <> 1) {?>
                <a href="<?php echo $url;?>.php?pagina=<?php echo $pag-1; ?>&num_pags=<?php echo $num_pags; echo $url_params;?>" title="P&aacute;gina Anterior">&lt;</a>
                <?php }?>
                P&aacute;gina
                <select id="cmbPagina" name="pagina" onchange="seleccionarPagina()">
                    <?php for($i = 1; $i <= $num_pags; $i++){
                        ?>
                    <option value="<?php echo $i;?>" <?php if($i == $pag) echo "selected"; ?>><?php echo $i;?></option>
                    <?php } ?>
                </select> de <?php echo $num_pags; ?>
                <input type="hidden" id="num_pags" name="num_pags" value="<?php echo $num_pags; ?>" />
                <?php if($pag <> $num_pags) {?>
                <a href="<?php echo $url;?>.php?pagina=<?php echo $pag+1; ?>&num_pags=<?php echo $num_pags; echo $url_params; ?>" title="P&aacute;gina Siguiente">&gt;</a>
                <?php }?>
                <a href="<?php echo $url;?>.php?pagina=<?php echo $num_pags; ?>&num_pags=<?php echo $num_pags; echo $url_params; ?>" title="Ir a &uacute;ltima p&aacute;gina">&raquo;</a>
            </td>
        </tr>
    </table>
    <?php
    }
}

/* Esta funcion funcionara como el array_search pero buscando dentro de cada
 * item q tambien es array porque el haystack es un array que me devuelve la
 * consulta a la base. Solo consulto en la primera columna
 */
function buscarEnArreglo($needle, $haystack){
    for($i = 0; $i < count($haystack); $i++){
        if($needle == $haystack[$i][0])
            return $i;
    }
    return false;
}
?>